﻿
CREATE proc [dbo].[GetOrganisationShortList] 
	@inOrgKey int = 0
as
begin

	set nocount on

	declare @rc int

	IF OBJECT_ID (N'#retOrg') IS NOT NULL
	begin
		drop table #retOrg	
	end
		
	create table #retOrg (
		OrgKey		int,
		OrgName		nvarchar(50),
		Prefix		nvarchar(50),
		ZusätzeFW	nvarchar(50),
		Suchbegriff	nvarchar(50),
		Rechtsform	nvarchar(50),
		Abteilung	nvarchar(50),
		Adresse		nvarchar(70),
		Straße		nvarchar(50),
		OrgData		nvarchar(150)
		)

	-- insert 1. Organisation with Rechtsformen
	insert into #retOrg (
		OrgKey,
		OrgName,
		Prefix,
		ZusätzeFW,
		Suchbegriff,
		Rechtsform,
		Abteilung,
		Adresse,
		Straße,
		OrgData
		)
	select 
		coalesce(o.OrgKey, 0)		'OrgKey',
		coalesce(o.Name,'')			'OrgName',
		coalesce(o.Prefix,'')		'Prefix',
		coalesce(o.ZusätzeFW,'')	'ZusätzeFW',
		coalesce(o.Suchbegriff,'')	'Suchbegriff',
		coalesce(rf.[RechtsFBez],'')	'Rechtsform',
		coalesce(o.Abteilung,'')	'Abteilung',
		coalesce(p.Plz,'') 
		+ ' ' + coalesce(p.Ort,'') 
		+ ', ' + coalesce(o.Straße,'')		'Adresse',
		coalesce(o.Straße,'')		'Straße',
		coalesce(o.Name + ' ','') 
			+ coalesce(o.Prefix + ' ','') 
			+ coalesce(o.ZusätzeFW + ' ','') 
			+ coalesce(rf.[RechtsFBez] + ' ' ,'')
			+ '(' + coalesce(p.Plz,'') 
			+ ' ' + coalesce(p.Ort,'') 
			+ ', ' + coalesce(o.Straße,'') + ')'  'OrgData'
		
	from dbo.Organisation o
		inner join dbo.Postleitzahl p on
			p.EPLZ = o.EPLZ
		inner join dbo.Rechtsform rf on
			rf.RechtsFKey = o.RechtsFKey

	-- insert 2. Organisation ohne Rechtsformen
	insert into #retOrg (
		OrgKey,
		OrgName,
		Prefix,
		ZusätzeFW,
		Suchbegriff,
		Rechtsform,
		Abteilung,
		Adresse,
		Straße,
		OrgData
		)
	select 
		coalesce(o.OrgKey, 0)		'OrgKey',
		coalesce(o.Name,'')			'OrgName',
		coalesce(o.Prefix,'')		'Prefix',
		coalesce(o.ZusätzeFW,'')	'ZusätzeFW',
		coalesce(o.Suchbegriff,'')	'Suchbegriff',
		null						'Rechtsform',
		coalesce(o.Abteilung,'')	'Abteilung',
		coalesce(p.Plz,'') 
		+ ' ' + coalesce(p.Ort,'') 
		+ ', ' + coalesce(o.Straße,'')		'Adresse',
		coalesce(o.Straße,'')		'Straße',
		coalesce(o.Name + ' ','') 
			+ coalesce(o.Prefix + ' ','') 
			+ coalesce(o.ZusätzeFW + ' ','') 
			+ '(' + coalesce(p.Plz,'') 
			+ ' ' + coalesce(p.Ort,'') 
			+ ', ' + coalesce(o.Straße,'') + ')'  'OrgData'
	from dbo.Organisation o
		inner join dbo.Postleitzahl p on
			p.EPLZ = o.EPLZ
	where o.RechtsFKey is null
	union all
	select	
		null,
		null, --OrgName
		null, --Prefix
		null,
		null,
		null,
		null,
		null,
		null,
		null

	select	OrgKey,
			OrgName,
			Prefix,
			ZusätzeFW,
			Suchbegriff,
			Rechtsform,
			Abteilung,
			Adresse,
			Straße,
			OrgData
	from #retOrg o
	--where o.OrgName != 'aaaa'
	order by o.OrgName, o.Prefix

	drop table #retOrg
end
GO
GRANT EXECUTE
    ON OBJECT::[dbo].[GetOrganisationShortList] TO PUBLIC
    AS [dbo];

